#include "protocol.h"


/***************************************************************
函数名：get_smart_frame
描  述：判断是否接受到完整的一帧数据（7E协议）
       举例：7e 7e 00 00 00 01 00 00 00 02 72 04 02 02 02 02 cs
输入值：rxframe_raw[] 数据指针 rxlen 数据长度
输出值：无
返回值：SHS_frame *pframe （NULL 无）
***************************************************************/
struct SHS_frame *get_smart_frame(uint8 rxframe_raw[],uint8 rxlen)
{
    struct SHS_frame *pframe;
    uint8 i=0;
    uint8 len;

start_lbl:
    while(i < rxlen)
    {
        if(STC == rxframe_raw[i]) break;
        i++;
    }
    if(rxlen-i < SHS_FRAME_HEAD) return(NULL);//接收等待length长度
    pframe = (struct SHS_frame*)&rxframe_raw[i];
    len = pframe->length;

    if(i+SHS_FRAME_HEAD+len+1 > rxlen)
    {
        i++;
        goto start_lbl;
    }

    if(pframe->infor[len] != checksum((uint8 *)pframe, len+SHS_FRAME_HEAD))
    {
        i++;
        goto start_lbl;
    }

    return(pframe);
}


